// pages/activity/index.js
const app = getApp()
const util = require('../../utils/util.js')
const db = wx.cloud.database()
Page({
  
  /**
   * 页面的初始数据
   */
  data: {
    activityInfo:{},//活动页面所有信息，从云函数返回值
    activityCards:[],//活动卡片
    userCards:[],//用户卡片，从前端数据库查询出结果
    leftTime:{d:0,h:0,m:0,s:0},//剩余时间
    temp:null,//定时器。
    isJoin:true,//是否参与活动默认已参加
    firstCards:[],//第一次参与活动赠送卡片
    status:{
      bannerAd:true, //banner广告开关
      taskBtn:'help', //任务中心按钮切换 task:任务中心 help:助力中心   任务中心没做
      activity:true,//默认活动状态是开启的
    },
    //任务列表 暂时没做
    taskList:[{
      task:'观看视频增加抽奖次数',
      add: 3,
      finished: 0,
      total: 3,
      type:'vedio'
    },{
      task:'关注公众号增加次数',
      add: 3,
      finished: 0,
      total: 1,
      type:'sub'
    },{
      task:'领红包增加次数',
      add: 3,
      finished: 0,
      total: 1,
      type:'ele'
    }],
    
    helpList:[],//助力列表
    openid:'',//用户openid
    nickname:'',//用户昵称
    headimg:'',//用户头像
    uid:'',//用户数据库id
    actid:'',//活动id
    count:0,//用户拥有的抽奖次数
    receive:true,//是否领取奖品
    win:false,//是否完成集齐卡片
    userReward:'',//奖励，只支持兑换码
    userInfo:{},//用户数据库中信息
  },
  // 初始化
  init(options){
    
    let that = this
    let now = new Date().getTime()
    if(!options.id){
      wx.redirectTo({
        url: '../index/index',
      })
    }
    wx.cloud.callFunction({
      name: 'getActivityInfo',
      data: {
        id: options.id,
        parent_openid:options.openid
      }
    }).then(res => {
      console.log(res);
      res.result.active.info = res.result.active.info.replace(/\<img/gi, '<img style="max-width:100%;height:auto"')
      let cards = res.result.active.keywords.split('')
      this.setData({
        activityCards:cards,
        uid:res.result.user._id,
        activityInfo:res.result.active,
        count:res.result.user.count,
        userInfo:res.result.user,
        userReward:res.result.user.code
      })
      let time = new Date().getTime() //当前时间
      if(res.result.active.win != res.result.active.total && res.result.active.endtime >= time){
        that.countTime(res.result.active.endtime,that)//立马获取倒计时
        that.data.temp = setInterval(() => {
          that.countTime(res.result.active.endtime,that)
        }, 1000);
      }else{
        let list = that.data.status
        list.activity = false
        wx.showToast({
          title: '活动已结束',
          icon:'error'
        })
        that.setData({leftTime:{d:0,h:0,m:0,s:0},status:list})
      }
      //判断是否参与活动
      console.log(res.result);
      if (res.result.user.isjoin) {
        console.log('已经参加活动',res.result.user);
        wx.hideLoading()
        that.setData({userCards:res.result.user.cards})
      }else{
        if (res.result.active.endtime<now) {
          return
        }
        let cards = res.result.active.keywords.split('')
        let tempArr = cards.filter((item,index)=>{
            return res.result.user.cards[index] == '1'
          
        })
        console.log('还未参加活动',res.result.user.cards,cards,tempArr);
          that.setData({
            isJoin:false,
            firstCards:tempArr,
            userCards:res.result.user.cards
          })
          wx.hideLoading()
      }

    })

    wx.cloud.callFunction({
      name: 'getHelpList',
      data: {
        actid: options.id,
        openid:this.data.openid
      }
    }).then(res=>{
      console.log(res.result.data);
      if(res.result.data.length>3){
        res.result.data = res.result.data.splice(0,3) 
      }
      this.setData({
        helpList:res.result.data
      })
    })
    
    
  },
  // 收下卡片点击按钮事件,判断是否有头像就能判断有没有授权
  acceptCards(){
    this.data.headimg
    if (!this.data.headimg) {
      wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中
        success: (res) => {
          console.log(res);
          this.setData({headimg:res.userInfo.avatarUrl,openid:res.userInfo.openid})
          wx.setStorageSync('nickname', res.userInfo.nickName)
          wx.setStorageSync('headimg', res.userInfo.avatarUrl)
          this.accent()
          wx.cloud.callFunction({
            name:'updateUser',
            data:{
              openid:res.userInfo.openid,
              actid:this.data.actid,
              nickname:res.userInfo.nickName,
              headimg:res.userInfo.avatarUrl
            }
          }).then(res=>{
            console.log(res);
          })
        },
        fail(){
          return
        }
      })

    }else{
      this.accent()
    }
    

  },
  //真正接受事件
  accent(){
    wx.showLoading({
      title: '领取中···',
    })
    wx.cloud.callFunction({
      name: 'joinActive',
      data: {
        actid:this.data.actid,
        uid: this.data.uid
      }
    }).then(res=>{
      wx.hideLoading()
      if (res.result.status === 'success') {
        wx.showToast({
        title: '领取成功！',
        })
      }else{
        wx.showToast({
          title: 'error',
          icon:'error'
        })
      }
      
    })
    this.setData({isJoin:true})
    
  },
  //抽奖按钮事件
  extract(){
    if (this.data.count === 0) {
      wx.showToast({
        title: '您当前没有抽奖次数，完成下方任务可以增加抽奖次数',
        icon:'none',
        mask:true
      })
      return
    }
    if (this.data.userCards.indexOf(0) == -1) {
      wx.showToast({
        title: '您已集齐，无需抽卡',
        icon:'none',
        mask:true
      })
      return
    }
    wx.showLoading({
      title: '抽取中',
      mask:true
    })
    wx.cloud.callFunction({
      name:'extract',
      data:{
        uid:this.data.uid,
        actid:this.data.actid
      }
    }).then(res=>{
  
      if (res.result.data.code === 200) {
        let userCards = this.data.userCards
        userCards[res.result.data.cardIndex] += 1
        this.setData({userCards:userCards,count:this.data.count-1,userReward:res.result.data.reward})
        wx.showToast({
          title: `恭喜您领取到“${res.result.data.card}”字`,
          icon:'none'
        })
      }else{
        wx.showToast({
          title: res.result.data.msg,
          icon:'none'
        })
      }
      
      console.log(res);
    })
  },
  //立即领取按钮事件
  getReward(){
    wx.showToast({
      title: this.data.userReward,
      icon:'none'
    })
  },
  //改变任务中心/助力中心事件
  changeBtn(e){
    if (e.target.dataset.type === 'task') {
      this.setData({
        status:{
          taskBtn:'task'
        }
      })
    }else if (e.target.dataset.type === 'help') {
      this.setData({
        status:{
          taskBtn:'help'
        }
      })
    }
  },
  //任务列表按钮事件
  taskBtn(e){
    console.log(e.currentTarget.dataset.type);
  },
  backHome(){
    wx.navigateTo({
      url: '../index/index',
    })
  },
  helpLog(){
    wx.navigateTo({
      url: './helpList?openid='+this.data.openid+'&actid='+this.data.actid,
    })
  },
  //计算倒计时
  countTime(endtime,that){
    let now = (new Date).getTime()
    let leftTime = endtime - now
    let t = {}
    t.d = util.formatNumber(parseInt(parseInt(leftTime/1000/3600/24)))
    t.h = util.formatNumber(parseInt(parseInt(leftTime/1000/3600%24)))
    t.m = util.formatNumber(parseInt(parseInt(leftTime/1000/60%60)))
    t.s = util.formatNumber(parseInt(leftTime/1000%60))
    that.setData({leftTime:t})
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    console.log(options);
    wx.showLoading({
      title: '正在加载',
      mask: true
    })
    this.setData({
      openid:wx.getStorageSync('openid'),
      headimg:wx.getStorageSync('headimg'),
      nickname:wx.getStorageSync('nickname'),
      actid:options.id
    })

    
    this.init(options)
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log('页面隐藏');
    clearInterval(this.data.temp)
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log('页面卸载');
    clearInterval(this.data.temp)
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function (e) {
    console.log(e);
    let that = this
    let urldata
    urldata = '/pages/activity/index?type=1&openid=' + that.data.openid + '&id=' + that.data.actid
    return {
      title: '我的小可爱', // 转发标题
      path: urldata, // 必须是以 / 开头的完整路径
      imageUrl: '',
    }
  }
})